chrome.userScripts

ब्यौरा

उपयोगकर्ता स्क्रिप्ट के कॉन्टेक्स्ट में उपयोगकर्ता स्क्रिप्ट को लागू करने के लिए, userScripts एपीआई का इस्तेमाल करें.

अनुमतियां

userScripts

User Scripts API का इस्तेमाल करने के लिए, chrome.userScripts अपने manifest.json में "userScripts" अनुमति जोड़ें. साथ ही, उन साइटों के लिए "host_permissions" जोड़ें जिन पर आपको स्क्रिप्ट चलानी हैं.

{
  "name": "User script test extension",
  "manifest_version": 3,
  "minimum_chrome_version": "120",
  "permissions": [
    "userScripts"
  ],
  "host_permissions": [
    "*://example.com/*"
  ]
}

उपलब्धता

Chrome 120+ MV3+

कॉन्सेप्ट और इस्तेमाल

उपयोगकर्ता स्क्रिप्ट, कोड का एक स्निपेट होता है. इसे वेब पेज में इंजेक्ट किया जाता है, ताकि उसके दिखने या काम करने के तरीके में बदलाव किया जा सके. कॉन्टेंट स्क्रिप्ट और chrome.scripting एपीआई जैसी एक्सटेंशन की अन्य सुविधाओं के मुकाबले, User Scripts API की मदद से, अपनी पसंद का कोड चलाया जा सकता है. यह एपीआई उन एक्सटेंशन के लिए ज़रूरी है जो उपयोगकर्ता की दी गई ऐसी स्क्रिप्ट चलाते हैं जिन्हें आपके एक्सटेंशन पैकेज के हिस्से के तौर पर शिप नहीं किया जा सकता.

userScripts API का इस्तेमाल करने की सुविधा चालू करना

आपके एक्सटेंशन को userScripts API का इस्तेमाल करने की अनुमति मिलने के बाद, उपयोगकर्ताओं को एक टॉगल चालू करना होगा, ताकि आपके एक्सटेंशन को एपीआई का इस्तेमाल करने की अनुमति मिल सके. Chrome के वर्शन के हिसाब से, ज़रूरी टॉगल और बंद होने पर एपीआई का व्यवहार अलग-अलग होता है.

नए उपयोगकर्ता को ऑनबोर्ड करने के दौरान, यह तय करने के लिए कि उपयोगकर्ता को कौनसा टॉगल चालू करना है, नीचे दी गई जांच का इस्तेमाल करें:

let version = Number(navigator.userAgent.match(/(Chrome|Chromium)\/([0-9]+)/)?.[2]);
if (version > 138) {
  // Allow User Scripts toggle will be used.
} else {
  // Developer mode toggle will be used.
}

नीचे दिए गए सेक्शन में, अलग-अलग टॉगल और उन्हें चालू करने के तरीके के बारे में बताया गया है.

Chrome के 138 से पहले के वर्शन (डेवलपर मोड टॉगल)

एक्सटेंशन डेवलपर के तौर पर, आपके Chrome इंस्टॉल में डेवलपर मोड पहले से चालू होता है. आपके उपयोगकर्ताओं को भी डेवलपर मोड चालू करना होगा.

अपने उपयोगकर्ताओं के लिए, एक्सटेंशन के दस्तावेज़ में इन निर्देशों को कॉपी करके चिपकाया जा सकता है

  1. नए टैब में chrome://extensions डालकर, एक्सटेंशन पेज पर जाएं. (डिज़ाइन के हिसाब से, chrome:// यूआरएल लिंक नहीं किए जा सकते.)
  2. डेवलपर मोड के बगल में मौजूद टॉगल स्विच पर क्लिक करके, डेवलपर मोड चालू करें.

    Chrome एक्सटेंशन पेज, जिसमें डेवलपर मोड टॉगल को हाइलाइट किया गया है

    एक्सटेंशन पेज (chrome://extensions)

Chrome के 138 और उसके बाद के वर्शन (यूज़र स्क्रिप्ट को चालू करने की सुविधा)

उपयोगकर्ता स्क्रिप्ट को अनुमति दें टॉगल, हर एक्सटेंशन की जानकारी वाले पेज पर होता है. उदाहरण के लिए, chrome://extensions/?id=YOUR_EXTENSION_ID.

अपने उपयोगकर्ताओं के लिए, एक्सटेंशन के दस्तावेज़ में नीचे दिए गए निर्देशों को कॉपी करके चिपकाया जा सकता है:

  1. नए टैब में chrome://extensions डालकर, एक्सटेंशन पेज पर जाएं. (डिज़ाइन के हिसाब से, chrome:// यूआरएल लिंक नहीं किए जा सकते.)
  2. एक्सटेंशन के बारे में ज़्यादा जानकारी देखने के लिए, एक्सटेंशन कार्ड पर मौजूद "जानकारी" बटन पर क्लिक करें.
  3. उपयोगकर्ता स्क्रिप्ट को अनुमति दें के बगल में मौजूद टॉगल स्विच पर क्लिक करें.
एक्सटेंशन की जानकारी वाले पेज पर, 'यूज़र स्क्रिप्ट को अनुमति दें' टॉगल
यूज़र स्क्रिप्ट को चालू करने की सुविधा का टॉगल (chrome://extensions/?id=abc...)

एपीआई की उपलब्धता देखना

हमारा सुझाव है कि userScripts API चालू है या नहीं, यह पता करने के लिए नीचे दिया गया तरीका अपनाएं. ऐसा इसलिए, क्योंकि यह Chrome के सभी वर्शन में काम करता है. यह जांच, chrome.userScripts() तरीके को कॉल करने की कोशिश करती है. एपीआई उपलब्ध होने पर, यह तरीका हमेशा काम करना चाहिए. अगर इस कॉल से कोई गड़बड़ी मिलती है, तो इसका मतलब है कि एपीआई उपलब्ध नहीं है:

function isUserScriptsAvailable() {
  try {
    // Method call which throws if API permission or toggle is not enabled.
    chrome.userScripts.getScripts();
    return true;
  } catch {
    // Not available.
    return false;
  }
}

अलग-अलग वर्ल्ड में काम करना

उपयोगकर्ता और कॉन्टेंट स्क्रिप्ट, दोनों को अलग-अलग वर्ल्ड या मुख्य वर्ल्ड में चलाया जा सकता है. अलग-थलग वर्ल्ड, एक ऐसा एक्सीक्यूशन एनवायरमेंट है जिसे होस्ट पेज या अन्य एक्सटेंशन ऐक्सेस नहीं कर सकते. इससे उपयोगकर्ता स्क्रिप्ट, होस्ट पेज या अन्य एक्सटेंशन की उपयोगकर्ता और कॉन्टेंट स्क्रिप्ट पर असर डाले बिना, अपना JavaScript एनवायरमेंट बदल सकती है. इसके उलट, होस्ट पेज या दूसरे एक्सटेंशन की उपयोगकर्ता और कॉन्टेंट स्क्रिप्ट, उपयोगकर्ता स्क्रिप्ट (और कॉन्टेंट स्क्रिप्ट) को नहीं दिखती हैं. मुख्य वर्ल्ड में चल रही स्क्रिप्ट, होस्ट पेजों और अन्य एक्सटेंशन के लिए ऐक्सेस की जा सकती हैं. साथ ही, ये होस्ट पेजों और अन्य एक्सटेंशन को दिखती हैं. दुनिया को चुनने के लिए, userScripts.register() को कॉल करते समय "USER_SCRIPT" या "MAIN" पास करें.

USER_SCRIPT दुनिया के लिए कॉन्टेंट की सुरक्षा के लिए नीति कॉन्फ़िगर करने के लिए, userScripts.configureWorld() को कॉल करें:

chrome.userScripts.configureWorld({
  csp: "script-src 'self'"
});

मैसेज सेवा

कॉन्टेंट स्क्रिप्ट और ऑफ़स्क्रीन दस्तावेज़ों की तरह, उपयोगकर्ता स्क्रिप्ट भी मैसेजिंग का इस्तेमाल करके, एक्सटेंशन के दूसरे हिस्सों से संपर्क करती हैं. इसका मतलब है कि वे runtime.sendMessage() और runtime.connect() को उसी तरह कॉल कर सकती हैं जिस तरह एक्सटेंशन का कोई भी दूसरा हिस्सा कर सकता है. हालांकि, इन्हें खास इवेंट हैंडलर का इस्तेमाल करके रिसीव किया जाता है. इसका मतलब है कि ये onMessage या onConnect का इस्तेमाल नहीं करते. इन हैंडलर को runtime.onUserScriptMessage और runtime.onUserScriptConnect कहा जाता है. खास हैंडलर की मदद से, उपयोगकर्ता स्क्रिप्ट से मिले मैसेज की पहचान करना आसान हो जाता है. ये मैसेज कम भरोसेमंद होते हैं.

मैसेज भेजने से पहले, आपको messaging आर्ग्युमेंट को true पर सेट करके, configureWorld() को कॉल करना होगा. ध्यान दें कि csp और messaging, दोनों आर्ग्युमेंट एक साथ पास किए जा सकते हैं.

chrome.userScripts.configureWorld({
  messaging: true
});

एक्सटेंशन से जुड़े अपडेट

एक्सटेंशन अपडेट होने पर, उपयोगकर्ता की स्क्रिप्ट मिट जाती हैं. एक्सटेंशन सेवा वर्कर्स में runtime.onInstalled इवेंट हैंडलर में कोड चलाकर, उन्हें फिर से जोड़ा जा सकता है. इवेंट कॉलबैक में भेजी गई "update" वजह का ही जवाब दें.

उदाहरण

यह उदाहरण, हमारे सैंपल रिपॉज़िटरी में मौजूद userScript सैंपल से लिया गया है.

स्क्रिप्ट रजिस्टर करना

यहां दिए गए उदाहरण में, register() को बुलाने का बुनियादी तरीका बताया गया है. पहला आर्ग्युमेंट, रजिस्टर की जाने वाली स्क्रिप्ट की जानकारी देने वाले ऑब्जेक्ट का कलेक्शन होता है. यहां दिखाए गए विकल्पों के अलावा, और भी विकल्प उपलब्ध हैं.

chrome.userScripts.register([{
  id: 'test',
  matches: ['*://*/*'],
  js: [{code: 'alert("Hi!")'}]
}]);

टाइप

ExecutionWorld

उपयोगकर्ता स्क्रिप्ट को चलाने के लिए JavaScript वर्ल्ड.

Enum

"MAIN"
यह DOM के एक्ज़ीक्यूशन एनवायरमेंट के बारे में बताता है. यह एक्ज़ीक्यूशन एनवायरमेंट, होस्ट पेज के JavaScript के साथ शेयर किया जाता है.

"USER_SCRIPT"
यह उपयोगकर्ता स्क्रिप्ट के लिए खास तौर पर, स्क्रिप्ट को चलाने के लिए इस्तेमाल होने वाले एनवायरमेंट के बारे में बताता है. साथ ही, यह पेज के सीएसपी से छूट पाता है.

InjectionResult

Chrome 135 और उसके बाद के वर्शन

प्रॉपर्टी

  • documentId

    स्ट्रिंग

    इंजेक्शन से जुड़ा दस्तावेज़.

  • गड़बड़ी

    स्ट्रिंग ज़रूरी नहीं है

    गड़बड़ी की जानकारी, अगर कोई है. error और result, एक-दूसरे से अलग होते हैं.

  • frameId

    संख्या

    इंजेक्शन से जुड़ा फ़्रेम.

  • नतीजा

    कोई भी ज़रूरी नहीं है

    स्क्रिप्ट चलाने का नतीजा.

InjectionTarget

Chrome 135 और उसके बाद के वर्शन

प्रॉपर्टी

  • allFrames

    बूलियन ज़रूरी नहीं है

    स्क्रिप्ट को टैब के सभी फ़्रेम में इंजेक्ट करना है या नहीं. डिफ़ॉल्ट रूप से, यह 'गलत' पर सेट होती है. अगर frameIds की वैल्यू दी गई है, तो यह शर्त पूरी नहीं होनी चाहिए.

  • documentIds

    string[] ज़रूरी नहीं

    उन खास दस्तावेज़ों के आईडी जिनमें डेटा डालना है. अगर frameIds सेट है, तो इसे सेट नहीं किया जाना चाहिए.

  • frameIds

    number[] ज़रूरी नहीं

    उन फ़्रेम के आईडी जिनमें इंजेक्शन करना है.

  • tabId

    संख्या

    उस टैब का आईडी जिसमें इंजेक्ट करना है.

RegisteredUserScript

प्रॉपर्टी

  • allFrames

    बूलियन ज़रूरी नहीं है

    अगर यह सही है, तो यह सभी फ़्रेम में इंजेक्ट हो जाएगा. भले ही, फ़्रेम टैब में सबसे ऊपर न हो. हर फ़्रेम की जांच, यूआरएल की ज़रूरी शर्तों के हिसाब से अलग से की जाती है. अगर यूआरएल की ज़रूरी शर्तें पूरी नहीं होती हैं, तो इसे चाइल्ड फ़्रेम में इंजेक्ट नहीं किया जाएगा. डिफ़ॉल्ट रूप से, यह 'गलत' पर सेट होती है. इसका मतलब है कि सिर्फ़ सबसे ऊपर वाले फ़्रेम की तुलना की जाती है.

  • excludeGlobs

    string[] ज़रूरी नहीं

    उन पेजों के लिए वाइल्डकार्ड पैटर्न तय करता है जिनमें इस यूज़र स्क्रिप्ट को इंजेक्ट नहीं किया जाएगा.

  • excludeMatches

    string[] ज़रूरी नहीं

    उन पेजों को बाहर रखता है जिनमें इस उपयोगकर्ता स्क्रिप्ट को इंजेक्ट किया जाना चाहिए. इन स्ट्रिंग के सिंटैक्स के बारे में ज़्यादा जानकारी के लिए, मैच पैटर्न देखें.

  • आईडी

    स्ट्रिंग

    एपीआई कॉल में बताई गई यूज़र स्क्रिप्ट का आईडी. यह प्रॉपर्टी '_' से शुरू नहीं होनी चाहिए, क्योंकि यह जनरेट किए गए स्क्रिप्ट आईडी के प्रीफ़िक्स के तौर पर रिज़र्व है.

  • includeGlobs

    string[] ज़रूरी नहीं

    उन पेजों के लिए वाइल्डकार्ड पैटर्न तय करता है जिनमें इस उपयोगकर्ता स्क्रिप्ट को इंजेक्ट किया जाएगा.

  • js

    ScriptSource[] ज़रूरी नहीं है

    ScriptSource ऑब्जेक्ट की सूची, जो मैच करने वाले पेजों में इंजेक्ट की जाने वाली स्क्रिप्ट के सोर्स की जानकारी देती है. ${ref:register} के लिए, इस प्रॉपर्टी की वैल्यू देना ज़रूरी है. साथ ही, यह भी ज़रूरी है कि वैल्यू के तौर पर कोई खाली कलेक्शन न दिया गया हो.

  • मैच

    string[] ज़रूरी नहीं

    इससे पता चलता है कि इस उपयोगकर्ता स्क्रिप्ट को किन पेजों में इंजेक्ट किया जाएगा. इन स्ट्रिंग के सिंटैक्स के बारे में ज़्यादा जानकारी के लिए, मैच पैटर्न देखें. ${ref:register} के लिए, इस प्रॉपर्टी की वैल्यू देना ज़रूरी है.

  • runAt

    RunAt ज़रूरी नहीं है

    इससे पता चलता है कि वेब पेज में JavaScript फ़ाइलें कब इंजेक्ट की जाती हैं. पसंदीदा और डिफ़ॉल्ट वैल्यू document_idle है.

  • दुनिया

    ExecutionWorld ज़रूरी नहीं है

    स्क्रिप्ट को चलाने के लिए, JavaScript का एक्ज़ीक्यूशन एनवायरमेंट. डिफ़ॉल्ट रूप से, यह `USER_SCRIPT` पर सेट होता है.

  • worldId

    स्ट्रिंग ज़रूरी नहीं है

    Chrome 133 और उसके बाद के वर्शन

    यह उस उपयोगकर्ता स्क्रिप्ट वर्ल्ड आईडी की जानकारी देता है जिसमें इसे चलाना है. अगर इसे शामिल नहीं किया जाता है, तो स्क्रिप्ट डिफ़ॉल्ट उपयोगकर्ता स्क्रिप्ट वर्ल्ड में चलेगी. यह वैल्यू सिर्फ़ तब मान्य होती है, जब world को शामिल न किया गया हो या वह USER_SCRIPT हो. शुरुआत में अंडरस्कोर (_) वाली वैल्यू इस्तेमाल नहीं की जा सकतीं.

ScriptSource

प्रॉपर्टी

  • कोड

    स्ट्रिंग ज़रूरी नहीं है

    इंजेक्ट करने के लिए JavaScript कोड वाली स्ट्रिंग. file या code में से किसी एक की जानकारी देना ज़रूरी है.

  • फ़ाइल

    स्ट्रिंग ज़रूरी नहीं है

    एक्सटेंशन की रूट डायरेक्ट्री के हिसाब से, इंजेक्ट की जाने वाली JavaScript फ़ाइल का पाथ. file या code में से किसी एक की जानकारी देना ज़रूरी है.

UserScriptFilter

प्रॉपर्टी

  • आईडी

    string[] ज़रूरी नहीं

    getScripts सिर्फ़ इस सूची में दिए गए आईडी वाली स्क्रिप्ट दिखाता है.

UserScriptInjection

Chrome 135 और उसके बाद के वर्शन

प्रॉपर्टी

  • injectImmediately

    बूलियन ज़रूरी नहीं है

    क्या इंजेक्शन को टारगेट में जल्द से जल्द ट्रिगर किया जाना चाहिए. ध्यान दें कि इससे इस बात की गारंटी नहीं मिलती कि इंजेक्शन, पेज लोड होने से पहले होगा. ऐसा इसलिए, क्योंकि हो सकता है कि स्क्रिप्ट टारगेट तक पहुंचने से पहले ही पेज लोड हो जाए.

  • ScriptSource ऑब्जेक्ट की सूची, जो टारगेट में इंजेक्ट की जाने वाली स्क्रिप्ट के सोर्स तय करती है.

  • टारगेट

    उस टारगेट की जानकारी जिसमें स्क्रिप्ट को इंजेक्ट करना है.

  • दुनिया

    ExecutionWorld ज़रूरी नहीं है

    स्क्रिप्ट को चलाने के लिए JavaScript "वर्ल्ड". डिफ़ॉल्ट रूप से, यह USER_SCRIPT पर सेट होता है.

  • worldId

    स्ट्रिंग ज़रूरी नहीं है

    यह उस उपयोगकर्ता स्क्रिप्ट वर्ल्ड आईडी की जानकारी देता है जिसमें इसे चलाना है. अगर इसे शामिल नहीं किया जाता है, तो स्क्रिप्ट डिफ़ॉल्ट उपयोगकर्ता स्क्रिप्ट वर्ल्ड में चलेगी. यह वैल्यू सिर्फ़ तब मान्य होती है, जब world को शामिल न किया गया हो या वह USER_SCRIPT हो. शुरुआत में अंडरस्कोर (_) वाली वैल्यू इस्तेमाल नहीं की जा सकतीं.

WorldProperties

प्रॉपर्टी

  • csp

    स्ट्रिंग ज़रूरी नहीं है

    दुनिया के सीएसपी के बारे में बताता है. डिफ़ॉल्ट रूप से, `ISOLATED` world csp सेट होता है.

  • मैसेज सेवा

    बूलियन ज़रूरी नहीं है

    इससे यह पता चलता है कि मैसेजिंग एपीआई एक्सपोज़र हैं या नहीं. डिफ़ॉल्ट रूप से, यह false पर सेट होता है.

  • worldId

    स्ट्रिंग ज़रूरी नहीं है

    Chrome 133 और उसके बाद के वर्शन

    अपडेट करने के लिए, उपयोगकर्ता स्क्रिप्ट की उस वर्ल्ड का आईडी बताता है. अगर यह पैरामीटर नहीं दिया जाता है, तो डिफ़ॉल्ट उपयोगकर्ता स्क्रिप्ट वर्ल्ड की प्रॉपर्टी अपडेट हो जाती हैं. शुरुआत में अंडरस्कोर (_) वाली वैल्यू इस्तेमाल नहीं की जा सकतीं.

तरीके

configureWorld()

वादा करना
chrome.userScripts.configureWorld(
  properties: WorldProperties,
  callback?: function,
)

`USER_SCRIPT` के एक्ज़ीक्यूशन एनवायरमेंट को कॉन्फ़िगर करता है.

पैरामीटर

  • प्रॉपर्टी

    इसमें उपयोगकर्ता स्क्रिप्ट का वर्ल्ड कॉन्फ़िगरेशन होता है.

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर इस तरह दिखता है:

    () => void

रिटर्न

  • Promise<void>

    मेनिफ़ेस्ट के V3 और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

execute()

Promise Chrome 135 और उसके बाद के वर्शन के लिए
chrome.userScripts.execute(
  injection: UserScriptInjection,
  callback?: function,
)

टारगेट किए गए कॉन्टेक्स्ट में स्क्रिप्ट इंजेक्ट करता है. डिफ़ॉल्ट रूप से, स्क्रिप्ट document_idle पर या पेज के पहले से लोड होने पर तुरंत चलेगी. अगर injectImmediately प्रॉपर्टी सेट है, तो पेज लोड होने का इंतज़ार किए बिना स्क्रिप्ट इंजेक्ट हो जाएगी. अगर स्क्रिप्ट का आकलन किसी प्रॉमिस के तौर पर किया जाता है, तो ब्राउज़र प्रॉमिस के सेटल होने का इंतज़ार करेगा और नतीजे वाली वैल्यू दिखाएगा.

पैरामीटर

  • इंजेक्शन
  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर इस तरह दिखता है:

    (result: InjectionResult[]) => void

रिटर्न

  • Promise<InjectionResult[]>

    मेनिफ़ेस्ट के V3 और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

getScripts()

वादा करना
chrome.userScripts.getScripts(
  filter?: UserScriptFilter,
  callback?: function,
)

इस एक्सटेंशन के लिए, डाइनैमिक तौर पर रजिस्टर की गई सभी उपयोगकर्ता स्क्रिप्ट दिखाता है.

पैरामीटर

  • फ़िल्टर करें

    UserScriptFilter ज़रूरी नहीं है

    अगर कोई वैल्यू दी जाती है, तो यह तरीका सिर्फ़ उससे मैच होने वाली उपयोगकर्ता स्क्रिप्ट दिखाता है.

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर इस तरह दिखता है:

    (scripts: RegisteredUserScript[]) => void

रिटर्न

  • मेनिफ़ेस्ट के V3 और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

getWorldConfigurations()

Promise Chrome 133 और उसके बाद के वर्शन के लिए
chrome.userScripts.getWorldConfigurations(
  callback?: function,
)

दुनिया भर के सभी रजिस्टर किए गए कॉन्फ़िगरेशन को वापस लाता है.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर इस तरह दिखता है:

    (worlds: WorldProperties[]) => void

रिटर्न

  • Promise<WorldProperties[]>

    मेनिफ़ेस्ट के V3 और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

register()

वादा करना
chrome.userScripts.register(
  scripts: RegisteredUserScript[],
  callback?: function,
)

इस एक्सटेंशन के लिए, एक या उससे ज़्यादा उपयोगकर्ता स्क्रिप्ट रजिस्टर करता है.

पैरामीटर

  • स्क्रिप्ट

    इसमें रजिस्टर की जाने वाली उपयोगकर्ता स्क्रिप्ट की सूची होती है.

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर इस तरह दिखता है:

    () => void

रिटर्न

  • Promise<void>

    मेनिफ़ेस्ट के V3 और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

resetWorldConfiguration()

Promise Chrome 133 और उसके बाद के वर्शन के लिए
chrome.userScripts.resetWorldConfiguration(
  worldId?: string,
  callback?: function,
)

उपयोगकर्ता स्क्रिप्ट की दुनिया के लिए कॉन्फ़िगरेशन को रीसेट करता है. तय किए गए आईडी के साथ दुनिया में इंजेक्ट की जाने वाली सभी स्क्रिप्ट, दुनिया के डिफ़ॉल्ट कॉन्फ़िगरेशन का इस्तेमाल करेंगी.

पैरामीटर

  • worldId

    स्ट्रिंग ज़रूरी नहीं है

    रीसेट की जाने वाली उपयोगकर्ता स्क्रिप्ट वर्ल्ड का आईडी. अगर यह पैरामीटर नहीं दिया जाता है, तो डिफ़ॉल्ट दुनिया का कॉन्फ़िगरेशन रीसेट हो जाता है.

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर इस तरह दिखता है:

    () => void

रिटर्न

  • Promise<void>

    मेनिफ़ेस्ट के V3 और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

unregister()

वादा करना
chrome.userScripts.unregister(
  filter?: UserScriptFilter,
  callback?: function,
)

इस एक्सटेंशन के लिए, डाइनैमिक तौर पर रजिस्टर की गई सभी उपयोगकर्ता स्क्रिप्ट को अनरजिस्टर करता है.

पैरामीटर

  • फ़िल्टर करें

    UserScriptFilter ज़रूरी नहीं है

    अगर कोई पैटर्न तय किया गया है, तो यह तरीका सिर्फ़ उससे मैच होने वाली उपयोगकर्ता स्क्रिप्ट को अनरजिस्टर करता है.

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर इस तरह दिखता है:

    () => void

रिटर्न

  • Promise<void>

    मेनिफ़ेस्ट के V3 और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

update()

वादा करना
chrome.userScripts.update(
  scripts: RegisteredUserScript[],
  callback?: function,
)

इस एक्सटेंशन के लिए, एक या उससे ज़्यादा उपयोगकर्ता स्क्रिप्ट अपडेट करता है.

पैरामीटर

  • स्क्रिप्ट

    इसमें उन उपयोगकर्ता स्क्रिप्ट की सूची होती है जिन्हें अपडेट करना है. किसी मौजूदा स्क्रिप्ट के लिए प्रॉपर्टी सिर्फ़ तब अपडेट की जाती है, जब इस ऑब्जेक्ट में उसकी जानकारी दी गई हो. अगर स्क्रिप्ट को पार्स करने/फ़ाइल की पुष्टि करने के दौरान गड़बड़ियां होती हैं या दिए गए आईडी, पूरी तरह से रजिस्टर की गई स्क्रिप्ट से मेल नहीं खाते हैं, तो कोई भी स्क्रिप्ट अपडेट नहीं की जाती.

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर इस तरह दिखता है:

    () => void

रिटर्न

  • Promise<void>

    मेनिफ़ेस्ट के V3 और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.